package com.alex.enumfunction.tradition;

/**
 * 带属性和方法的订单状态枚举
 * 实际项目中最常用的枚举定义方式
 */
public enum OrderStatusDetailAlex008 {
    // 2. 带参数的枚举定义
    UNPAID(0, "待支付"),
    PAID(1, "已支付"),
    SHIPPED(2, "已发货"), 
    DELIVERED(3, "已送达"),
    COMPLETED(4, "已完成");

    // 定义枚举属性
    private final int code;        // 状态码
    private final String message;  // 状态描述

    // 构造方法 - 必须是private的
    private OrderStatusDetailAlex008(int code, String message) {
        this.code = code;
        this.message = message;
    }

    // Getter方法
    public int getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

    // 3. 便利方法 - 根据状态码获取枚举
    public static OrderStatusDetailAlex008 fromCode(int code) {
        for (OrderStatusDetailAlex008 status : OrderStatusDetailAlex008.values()) {
            if (status.getCode() == code) {
                return status;
            }
        }
        throw new IllegalArgumentException("Invalid order status code: " + code);
    }
}